#ifndef SOUND_SOUNDDEVICELOCATOR_H_
#define SOUND_SOUNDDEVICELOCATOR_H_

#include <string>

#include "base/constructormagic.h"

namespace cricket {

	// A simple container for holding the name of a device and any additional id
	// information needed to locate and open it. Implementations of
	// SoundSystemInterface must subclass this to add any id information that they
	// need.
	class SoundDeviceLocator {
	public:
		virtual ~SoundDeviceLocator() {}

		// Human-readable name for the device.
		const std::string &name() const { return name_; }

		// Name sound system uses to locate this device.
		const std::string &device_name() const { return device_name_; }

		// Makes a duplicate of this locator.
		virtual SoundDeviceLocator *Copy() const = 0;

	protected:
		SoundDeviceLocator(const std::string &name,
			const std::string &device_name)
			: name_(name), device_name_(device_name) {}

		explicit SoundDeviceLocator(const SoundDeviceLocator &that)
			: name_(that.name_), device_name_(that.device_name_) {}

		std::string name_;
		std::string device_name_;

	private:
		DISALLOW_ASSIGN(SoundDeviceLocator);
	};

}  // namespace cricket

#endif  // SOUND_SOUNDDEVICELOCATOR_H_
